diff --git a/tests/codeigniter/core/Common_test.php b/tests/codeigniter/core/Common_test.php
index 27d48ef..999b49c 100644
--- a/tests/codeigniter/core/Common_test.php
+++ b/tests/codeigniter/core/Common_test.php
@@ -2,8 +2,6 @@
 
 class Common_test extends CI_TestCase {
 
-	// ------------------------------------------------------------------------
-
 	public function test_is_php()
 	{
 		$this->assertEquals(TRUE, is_php('1.2.0'));
@@ -16,12 +14,12 @@
 	{
 		$this->assertEquals(' class="foo" id="bar"', _stringify_attributes(array('class' => 'foo', 'id' => 'bar')));
 
-		$atts = new Stdclass;
+		$atts = new stdClass;
 		$atts->class = 'foo';
 		$atts->id = 'bar';
 		$this->assertEquals(' class="foo" id="bar"', _stringify_attributes($atts));
 
-		$atts = new Stdclass;
+		$atts = new stdClass;
 		$this->assertEquals('', _stringify_attributes($atts));
 
 		$this->assertEquals(' class="foo" id="bar"', _stringify_attributes('class="foo" id="bar"'));
@@ -35,10 +33,20 @@
 	{
 		$this->assertEquals('width=800,height=600', _stringify_attributes(array('width' => '800', 'height' => '600'), TRUE));
 
-		$atts = new Stdclass;
+		$atts = new stdClass;
 		$atts->width = 800;
 		$atts->height = 600;
 		$this->assertEquals('width=800,height=600', _stringify_attributes($atts, TRUE));
 	}
 
+	// ------------------------------------------------------------------------
+
+	public function test_html_escape()
+	{
+		$this->assertEquals(
+			html_escape('Here is a string containing "quoted" text.'),
+			'Here is a string containing &quot;quoted&quot; text.'
+		);
+	}
+
 }
\ No newline at end of file
diff --git a/tests/codeigniter/helpers/form_helper_test.php b/tests/codeigniter/helpers/form_helper_test.php
index 48628d2..0327858 100644
--- a/tests/codeigniter/helpers/form_helper_test.php
+++ b/tests/codeigniter/helpers/form_helper_test.php
@@ -7,6 +7,8 @@
 		$this->helper('form');
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_hidden()
 	{
 		$expected = <<<EOH
@@ -18,6 +20,8 @@
 		$this->assertEquals($expected, form_hidden('username', 'johndoe'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_input()
 	{
 		$expected = <<<EOH
@@ -37,6 +41,8 @@
 		$this->assertEquals($expected, form_input($data));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_password()
 	{
 		$expected = <<<EOH
@@ -47,6 +53,8 @@
 		$this->assertEquals($expected, form_password('password'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_upload()
 	{
 		$expected = <<<EOH
@@ -57,6 +65,8 @@
 		$this->assertEquals($expected, form_upload('attachment'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_textarea()
 	{
 		$expected = <<<EOH
@@ -67,6 +77,8 @@
 		$this->assertEquals($expected, form_textarea('notes', 'Notes'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_dropdown()
 	{
 		$expected = <<<EOH
@@ -130,6 +142,8 @@
 		$this->assertEquals($expected, form_dropdown('cars', $options, array('volvo', 'audi')));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_multiselect()
 	{
 		$expected = <<<EOH
@@ -152,6 +166,8 @@
 		$this->assertEquals($expected, form_multiselect('shirts[]', $options, array('med', 'large')));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_fieldset()
 	{
 		$expected = <<<EOH
@@ -163,6 +179,8 @@
 		$this->assertEquals($expected, form_fieldset('Address Information'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_fieldset_close()
 	{
 		$expected = <<<EOH
@@ -172,6 +190,8 @@
 		$this->assertEquals($expected, form_fieldset_close('</div></div>'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_checkbox()
 	{
 		$expected = <<<EOH
@@ -182,6 +202,8 @@
 		$this->assertEquals($expected, form_checkbox('newsletter', 'accept', TRUE));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_radio()
 	{
 		$expected = <<<EOH
@@ -192,6 +214,8 @@
 		$this->assertEquals($expected, form_radio('newsletter', 'accept', TRUE));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_submit()
 	{
 		$expected = <<<EOH
@@ -202,6 +226,8 @@
 		$this->assertEquals($expected, form_submit('mysubmit', 'Submit Post!'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_label()
 	{
 		$expected = <<<EOH
@@ -211,6 +237,8 @@
 		$this->assertEquals($expected, form_label('What is your Name', 'username'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_reset()
 	{
 		$expected = <<<EOH
@@ -221,6 +249,8 @@
 		$this->assertEquals($expected, form_reset('myreset', 'Reset'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_button()
 	{
 		$expected = <<<EOH
@@ -231,6 +261,8 @@
 		$this->assertEquals($expected, form_button('name', 'content'));
 	}
 
+	// ------------------------------------------------------------------------
+
 	public function test_form_close()
 	{
 		$expected = <<<EOH
@@ -240,13 +272,6 @@
 		$this->assertEquals($expected, form_close('</div></div>'));
 	}
 
-	public function test_form_prep()
-	{
-		$expected = 'Here is a string containing &quot;quoted&quot; text.';
-
-		$this->assertEquals($expected, form_prep('Here is a string containing "quoted" text.'));
-	}
-
 }
 
 /* End of file form_helper_test.php */
\ No newline at end of file
